package org.dromara.system.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.bo.SysFaultFeedbackEnAuditBo;
import org.dromara.system.domain.bo.SysFaultFeedbackEnBo;
import org.dromara.system.domain.bo.SysFaultFeedbackEnQueryBo;
import org.dromara.system.domain.vo.SysFaultFeedbackEnVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * English Fault Feedback Service Interface
 *
 * @author system
 * @date 2025-10-10
 */
public interface ISysFaultFeedbackEnService {

    /**
     * Submit fault feedback (user side)
     *
     * @param bo    Feedback information
     * @param files Image files (maximum 3)
     * @return Feedback detail
     */
    SysFaultFeedbackEnVo submitFeedback(SysFaultFeedbackEnBo bo, MultipartFile[] files);

    /**
     * Query feedback list with pagination
     *
     * @param queryBo   Query conditions
     * @param pageQuery Pagination parameters
     * @return Pagination result
     */
    TableDataInfo<SysFaultFeedbackEnVo> queryPageList(SysFaultFeedbackEnQueryBo queryBo, PageQuery pageQuery);

    /**
     * Query feedback list (non-paginated)
     *
     * @param queryBo Query conditions
     * @return Feedback list
     */
    List<SysFaultFeedbackEnVo> queryList(SysFaultFeedbackEnQueryBo queryBo);

    /**
     * Query feedback detail
     *
     * @param feedbackId Feedback ID
     * @return Feedback detail
     */
    SysFaultFeedbackEnVo queryById(Long feedbackId);

    /**
     * Audit feedback (admin side)
     *
     * @param auditBo Audit information
     * @return Success or not
     */
    Boolean auditFeedback(SysFaultFeedbackEnAuditBo auditBo);

}

